package com.gdut.huayan.utils;

import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.stereotype.Component;

import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;

@Component
public class RedisUtils {

    private final StringRedisTemplate redisTemplate;

    public RedisUtils(StringRedisTemplate redisTemplate) {
        this.redisTemplate = redisTemplate;
    }

//    public boolean putSet(String key, List<String> list,long expire){
//        redisTemplate.opsForSet().add(key,list.toArray(new String[0]));
//        redisTemplate.expire(key,expire,TimeUnit.MILLISECONDS);
//        return true;
//    }

//    public Set<String> getSet(String key){
//        return redisTemplate.opsForSet().members(key);
//    }

    public boolean putHash(String key, Map<String,String> map,long expire){
        redisTemplate.opsForHash().putAll(key,map);
        redisTemplate.expire(key,expire,TimeUnit.MILLISECONDS);
        return true;
    }

//    public boolean putHash(String key,String hashKey,String hashValue,long expire){
//        redisTemplate.opsForHash().put(key,hashKey,hashValue);
//        return true;
//    }

    public String getHash(String key,String hashKey){
        return (String) redisTemplate.opsForHash().get(key, hashKey);
    }

//    public boolean isExits(String key,String setKey) {
//        return Boolean.TRUE.equals(redisTemplate.opsForSet().isMember(key, key));
//    }

    /**
     * 放入键值
     * @param key 键
     * @param value 值
     * @param expire 过期时间戳
     * @return 是否成功
     */
    public boolean put(String key, String value, long expire) {
        redisTemplate.opsForValue().set(key, value, expire, TimeUnit.MILLISECONDS);
        return true;
    }

    public boolean remove(String key) {
        return Boolean.TRUE.equals(redisTemplate.delete(key));
    }

//    public boolean refresh(String key, long expire) {
//        return Boolean.TRUE.equals(redisTemplate.expire(key, expire, TimeUnit.MILLISECONDS));
//    }

    public String get(String key) {
        return redisTemplate.opsForValue().get(key);
    }

//    public boolean put(String key, String value){
//        redisTemplate.opsForValue().set(key,value);
//        return true;
//    }
}
